#include <iostream>
#include <set>

using namespace std;
int main() {
    set<int> s;
    s.insert(1);
    s.insert(1);
    s.insert(2);
    s.insert(2);
    s.insert(4);
    s.insert(4);
    s.insert(3);
    for(auto e : s) {
        cout << e << " ";
    }
    cout << endl;
    // 删除方式一
    s.erase(2);
    // 删除方式二
    set<int>::iterator pos = s.find(3);
    if(pos != s.end()) {
        s.erase(pos);
    }
    set<int>::iterator it = s.begin();
    while(it != s.end()) {
        cout << *it << " ";
        it++;
    }
    cout << endl;
    cout << s.count(1) << endl;
    cout << s.size() << endl;
    s.clear();
    cout << s.empty() << endl;
    set<int> temp{10, 8, 2, 6, 9, 1, 3, 5};
    s.swap(temp);
    set<int>::reverse_iterator rit = s.rbegin();
    while(rit != s.rend()) {
        cout << *rit << " ";
        rit++;
    }
    cout << endl;
    auto x = s.lower_bound(8);
    auto y = s.upper_bound(8);
    cout << *x << " " << *y << endl;
    return 0;
}